#ifndef MINILOG_H
#define MINILOG_H
#include <stdarg.h>

#define LOGNONE		0
#define CRITICAL	1
#define ERROR		2
#define WARNING		4
#define INFO		8
#define RESULT		16
#define DEBUG		32
#define PROCESS		64
#define CUSTOM		1024
#define LOGALL		-1			/* -1 means all bits are 1	*/

#define LOGFILE		__minilog__logfile
#define L(X)		if(X & __minilog__logging)
#define V(X)		if(X & __minilog__verbose)
#define VP(X, ...)	if(X & __minilog__verbose) printf(__VA_ARGS__)
#define LP(X, ...)	if(X & __minilog__logging) fprintf(LOGFILE,__VA_ARGS__)
#define VLP(X, ...) if((X & __minilog__verbose) && (X & __minilog__logging))
#define LOG(X, ...) if(X & __minilog__verbose) printf(__VA_ARGS__); if(X & __minilog__logging) fprintf(LOGFILE,__VA_ARGS__)
FILE* __minilog__logfile;
int __minilog__logging;
int __minilog__verbose;

char __minilog__temp_string[1000];
/*
void printl(char* fmt, ...) {
    va_list args;
    va_start(args,fmt);
	vsprintf(__minilog__temp_string,fmt,args);
	printf(__minilog__temp_string);
	fprintf(LOGFILE,__minilog__temp_string);
    va_end(args);
}
void printlm(int mark,char* fmt, ...)
{
    va_list args;
    va_start(args,fmt);
	if (mark & __minilog__verbose) vprintf(fmt,args);
	if (mark & __minilog__logging) vfprintf(__minilog__logfile,fmt,args);
    va_end(args);
}
*/
int minilog_start(const char* filename,int verbose, int logging){
	__minilog__verbose=verbose;
	__minilog__logging=logging;
	if (logging)
		if(!(__minilog__logfile=fopen(filename,"w"))) return -1;
	return 0;
}
int minilog_stop(){
	if (__minilog__logging)
		fclose(__minilog__logfile);
	return 0;
}
#endif
